Virtual machine (VM) technology has emerged as a building block for cloud computing. The idea is to provide a layer of abstraction over resources of a physical server and multiplex the layers of abstraction among processes running on the physical server. Virtualization provides several benefits, such as performance isolation, security, ease of management, and flexibility of running applications in a user-customized environment.
Within a cloud computing environment, the VM load may fluctuate under dynamic conditions caused by factors such as incremental growth in workload, time-of-day effects, and increases in network traffic. This may result in the creation of hotspots, which are resources within the cloud computing environment that are backlogged due to an excessive number of transactions, for example. Such hotspots may degrade the quality of service (QoS) of hosted applications by causing longer response times and lower throughputs. Therefore, to allow for runtime load balancing, cloud computing platforms may provide live migration of application processes. Live migration involves transparently moving an entire VM, including its memory state, processor registers, operating system (OS), and applications, from an overloaded server to an underloaded server with relatively low downtime. The ability to move processes with relatively low downtime may be useful for a variety of applications, such as applications for hosting live, interactive services. Thus, automated VM management represents a new opportunity to enable agile and dynamic resource management in data centers networks. Currently, several techniques are available for live migration. However, such techniques fail to address several control issues, as discussed further below.